home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 February / PCWorld_2007-02_cd.bin / domacnost a kancelar / avedesk / AveDesk13.exe / Effects / Orbit.effectlet < prev    next >
Extensible Markup Language  |  2005-09-07  |  5KB  |  197 lines

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <effectlet>
  3.     <info>
  4.         <name>Orbit Effect Script</name>
  5.         <author>Dreadnaut</author>
  6.         <notes><![CDATA[ For bugs or anything else, contact me at dreadnaut@despammed.com ]]></notes>
  7.         <version>0.0.6</version>
  8.     </info>
  9.     <settings>
  10.         <param name="Debug" type="Boolean" defval="False"/>
  11.     </settings>
  12.  
  13.     <preferences>
  14.  
  15.     <preference name="HorizontalRadius" type="range"   defval="100" min="0" max="1000">
  16.         Half-length of the ellipse horizontal axis
  17.         </preference>
  18.     <preference name="VerticalRadius" type="range"   defval="100" min="0" max="1000">
  19.         Half-length of the ellipse vertical axis
  20.         </preference>
  21.     <preference name="RevolutionsPerDay" type="range"   defval="1440" min="1" max="8640">
  22.         Number of orbits completed in a day:
  23.         1 - one revolution per day
  24.         24 - one revolution per hour
  25.         1440 - one revolution per minute
  26.         8640 - one revolution every 10 seconds
  27.         </preference>
  28.     <preference name="AngularResolution" type="range"   defval="180" min="3" max="2880">
  29.         Number of step to complete a revolution - i.e. smoothness of the animation
  30.         </preference>
  31.     <preference name="StartPosition" type="range"   defval="0" min="0" max="359">
  32.         The desklet will start from this angular position when loaded
  33.         </preference>
  34.     <preference name="xExtraPrecision" type="range"   defval="10000" min="0" max="10000">
  35.         Extra setting for fine tuning of the revolution speed: 10000 means 100% of the RevolutionsPerDay speed.
  36.         e.g. 9649 and 1 revolution per day gives you a lunar day (24h 50m 30s)
  37.         </preference>
  38.     <preference name="option_RotateDesklet" type="range"   defval="0" min="0" max="1">
  39.         Rotate the desklet while moving along its orbit. Will eat a lot of CPU :)
  40.         </preference>
  41.  
  42.     </preferences>
  43.  
  44.     <images>
  45.     </images>
  46.  
  47.     <script engine="vbScript"><![CDATA[
  48.  
  49.     Dim StartTop, StartLeft, StepPosition, StepDegree
  50.     Dim TickRate
  51.     Dim PrefChange
  52.     Dim RadConv
  53.     Dim newx,newy
  54.  
  55.     'These routines are the optional ones called by the framework
  56.     Sub OnCreate()
  57.     'Init
  58.     StartTop = Desklet.top
  59.     StartLeft = Desklet.left
  60.     RadConv = (4 * Atn(1)) / 180
  61.     Reset()
  62.  
  63.     'Default preferences
  64.     HorizontalRadius = 100
  65.     VerticalRadius = 100
  66.     RevolutionsPerDay = 1440
  67.     AngularResolution = 180
  68.     StartPosition = 0
  69.     xExtraPrecision = 10000
  70.  
  71.         'And Reading overwrites them with some previous user changes
  72.         Preferences.ReadAll()
  73.  
  74.         'StepPosition = StartPosition * 360 / AngularResolution
  75.     Evaluate()
  76.  
  77.     Ticker.enabled = true
  78.     End Sub
  79.  
  80.     Sub OnMouseOn()
  81.     if Ticker.Enabled = false Then Ticker.Enabled = true
  82.     End Sub
  83.  
  84.     Sub OnMouseout()
  85.     End Sub
  86.  
  87.     'Function OnBeforeDraw(IsMouseOn, IsSelected, IsPreview)
  88.     'End Function
  89.  
  90.     'Function OnAfterDraw(IsMouseOn, IsSelected, IsPreview)
  91.     'End Function
  92.     
  93.     Sub OnSave()
  94.         Preferences.SaveAll
  95.     End Sub
  96.  
  97.     'Optional. Indicates a preference change
  98.     Function OnPreferenceChange(Preference, oldValue, newValue)
  99.     Reset()
  100.     PrefChange = true
  101.         Ticker.Interval = 500
  102.         Ticker.Enabled = true
  103.     End Function
  104.  
  105.     Sub Reset()
  106.     Ticker.Enabled = false
  107.     Desklet.move StartLeft, StartTop
  108.     Desklet.rotation = 0
  109.     End Sub
  110.  
  111.     Sub Evaluate()
  112.     TickRate = cint(86400000 / AngularResolution / RevolutionsPerDay / xExtraPrecision * 10000)
  113.     Ticker.Interval = TickRate
  114.     StepPosition = StartPosition * 360 / AngularResolution
  115.     EvaluatePosition()
  116.     PrefChange = false
  117.     End Sub
  118.  
  119.     Sub EvaluatePosition()
  120.     StepDegree = StepPosition * 360 / AngularResolution
  121.     newx = StartLeft + cint(HorizontalRadius * cos(StepDegree * RadConv))
  122.     newy = StartTop  + cint(VerticalRadius   * sin(StepDegree * RadConv))
  123.     End Sub
  124.  
  125.     'You can only have 1 Ticker per effectlet
  126.     'The OnTimer method is shielded against multiple entrance recursion
  127.     Sub OnTimer()
  128.     if PrefChange Then
  129.                 Evaluate()
  130.         Else
  131.                 EvaluatePosition()
  132.         End If
  133.  
  134.     If option_RotateDesklet = 1 Then
  135.         Desklet.rotation = cint(StepDegree)
  136.         Desklet.Redraw()
  137.     End If
  138.  
  139.     Desklet.Move newx, newy
  140.  
  141.     if (StepPosition < AngularResolution - 1) Then
  142.         StepPosition = StepPosition + 1
  143.     Else
  144.         StepPosition = 0
  145.     End If
  146.     End Sub
  147.  
  148.     'Optional calls that we don't need for this script:
  149.  
  150.     'Sub OnSelect()
  151.     'End Sub
  152.  
  153.     'Sub OnDeselect()
  154.     'End Sub
  155.  
  156.     'Sub OnShow()
  157.     'End Sub
  158.  
  159.     'Sub OnHide()
  160.     'End Sub
  161.  
  162.     'Sub OnConfigure()
  163.         'the configuration dialog with default UI for
  164.         'XML preferences will be shown.
  165.         'An additional dialog designer is on its way. It will
  166.         'extend the available default preferences of type:
  167.         ' - slider, checkbox, combobox (builtin, v. 1.1, free on form with v. 1.2)
  168.         ' - textbox, file browser, favorites URL (builtin and free on form, v. 1.2)
  169.         ' - Any ocx (external, only free on form, v. 1.2)
  170.     'End Sub
  171.  
  172.     Sub OnStartMove()
  173.     Reset()
  174.     End Sub
  175.  
  176.     Sub OnEndMove()
  177.     StartTop = Desklet.top
  178.     StartLeft = Desklet.left
  179.     EvaluatePosition()
  180.            Ticker.Interval = TickRate
  181.     Ticker.Enabled = true
  182.     End Sub
  183.  
  184.     'Sub OnLeftClick()
  185.     'End Sub
  186.  
  187.     'Sub OnRightClick()
  188.     'End Sub
  189.  
  190.     Sub OnDestroy
  191.     Reset()
  192.     End Sub
  193.  
  194.  
  195.     ]]></script>
  196. </effectlet>
  197.